package com.woniu113.junk.site.controller;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.io.FileTypeUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.woniu113.junk.commons.model.Result;
import com.woniu113.junk.site.form.wastetype.AddWasteTypeForm;
import com.woniu113.junk.site.form.wastetype.AllWasteTypeForm;
import com.woniu113.junk.site.model.WasteType;
import com.woniu113.junk.site.param.wastetype.AddWasteTypeParam;
import com.woniu113.junk.site.param.wastetype.AllWasteTypeParam;
import com.woniu113.junk.site.service.WasteTypeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;
/**
 * 类注解:
 * 废品类别管理
 */

/**
 *
 * @author 蜡笔没了小新
 * @since 2024年10月16日
 */
@RestController
@RequestMapping("/wasteType")
@Api(value = "WasteTypeController", tags = "废品类型信息接口")
public class WasteTypeController {

    @Resource
    private WasteTypeService wasteTypeService;

    /**
     * 新增废品类型
     * @param form
     * @return 返回数据为新增的商品类型,成功提示,成功code
     * @throws Exception
     */
    @PostMapping("/addWasteType")
    @ApiOperation(value = "新增废品类型")
    public Result<WasteType> addWasteType(@RequestBody AddWasteTypeForm form) throws Exception{
        System.out.println("图标："+form.getIcon());
        //通过文件头信息判断文件类型
        String type = FileTypeUtil.getType(form.getIcon().getInputStream());//得到传入文件的文件类型(需要得到传入的image的输入流)
        System.out.println("图标类型："+type);
        if(!(type.equals("jpg") || type.equals("png"))){//不是这两种类型,表示传入的文件不合法
            throw new Exception("图片类型错误");
        }
        WasteType newWasteType = wasteTypeService.addWasteType(BeanUtil.toBean(form, AddWasteTypeParam.class));
        return Result.getResult(WasteType.class).setData(newWasteType).setMsg("新增废品类型成功").setCode(200);
    }

    /**
     * 删除废品类型
     * @param typeId 废品类型id
     * @return 返回成功提示与成功code
     */
    @GetMapping("/deleteWasteType")
    @ApiOperation(value = "删除废品类型")
    public Result deleteWasteType(@RequestParam("typeId") Integer typeId){
        wasteTypeService.deleteWasteType(typeId);
        return Result.getResult().setMsg("删除废品类型成功").setCode(200);
    }

    /**
     * 禁用废品类型
     * @param typeId 废品类型id
     * @return 返回成功提示与成功code
     */
    @GetMapping("/disableWasteType")
    @ApiOperation(value = "禁用废品类型")
    public Result disableWasteType(@RequestParam("typeId") Integer typeId){
        wasteTypeService.disableWasteType(typeId);
        return Result.getResult().setMsg("禁用废品类型成功").setCode(200);
    }

    /**
     * 解禁(正常)废品类型
     * @param typeId 废品类型id
     * @return 返回成功提示与成功code
     */
    @GetMapping("/ableWasteType")
    @ApiOperation(value = "解禁(正常)废品类型")
    public Result ableWasteType(@RequestParam("typeId") Integer typeId){
        wasteTypeService.ableWasteType(typeId);
        return Result.getResult().setMsg("解禁(正常)废品类型成功").setCode(200);
    }

    /**
     * 按照废品类型id查询废品类型
     * @param typeId 废品类型id
     * @return 返回查询数据,成功提示与成功code
     */
    @GetMapping("/findByTypeId")
    @ApiOperation(value = "按照废品类型id查询废品类型")
    public Result<WasteType> findByTypeId(@RequestParam("typeId") Integer typeId){
        WasteType wasteType = wasteTypeService.getById(typeId);
        return Result.getResult(WasteType.class).setData(wasteType).setMsg("按照废品类型id查询废品类型成功").setCode(200);
    }

    /**
     * 查询所有废品类型信息
     * @param form (类型名/分页数据)
     * @return 返回查询到的所有类型数据和成功提示与code
     */
    @PostMapping("/findAll")
    @ApiOperation(value = "查询所有废品类型信息")
    public Result<Page<WasteType>> findAll(@RequestBody AllWasteTypeForm form) {
        System.out.println(form.getPageNum());
        System.out.println(form.getPageNum());
        Page<WasteType> wasteTypeList = wasteTypeService.findAll(BeanUtil.toBean(form, AllWasteTypeParam.class));
        return new Result<Page<WasteType>>().setData(wasteTypeList).setMsg("查询所有废品类型成功").setCode(200);
    }

    /**
     * 查询选择的区站点的未设置废品价格的废品类型
     */
    @GetMapping("/findWasteTypeNoWastePrice")
    public Result<List<WasteType>> findWasteTypeNoWastePrice(@RequestParam("stationId") Integer stationId){
        List<WasteType> wasteTypeList = wasteTypeService.findWasteTypeNoWastePrice(stationId);
        return Result.getListResult(WasteType.class).setData(wasteTypeList).setMsg("查询选择的区站点的未设置废品价格的废品类型信息成功").setCode(200);
    }

    /**
     * 查询订单所属区域废品种类
     * */
}

